/* Copyright ©, 2022, ECARX (Hubei) Technology Co., Ltd. All rights reserved.
 *
 * NOTICE: This file contains information which is confidential and proprietary to ECARX
 * (Hubei) Technology Co., Ltd. and/or other developers. No license to any intellectual
 * property rights contained within this file is either granted or implied except as may be
 * provided in an agreement with ECARX (Hubei) Technology Co., Ltd.
 *
 * Any unauthorized copying or distribution of content from this file in whole or in part
 * is prohibited.
 */
#ifndef ECARX_VHAL_CORE_PROPERTY_TRANSFER_H
#define ECARX_VHAL_CORE_PROPERTY_TRANSFER_H

#include <memory>
#include <optional>

#include "vhal_core/Common.h"
#include "vhal_core/property/IProperty.h"

namespace ecarx::vhal::core::property {

class IPropertyTransfer {
  public:
    virtual ~IPropertyTransfer() {}
    virtual std::unique_ptr<VehiclePropValue> getPropValue(int32_t propertyId, int32_t areaId) = 0;
    virtual bool setPropValue(const VehiclePropValue& value) = 0;
    virtual void onPropertyValue(const VehiclePropValue&,CommitMode) = 0;
    virtual Area* findArea(int32_t propertyId, int32_t areaId) = 0;
};

}  // namespace ecarx::vhal::core::property

#endif